package com.mofum.cloud.core.model;

/**
 * 算法结果
 * ===================================================================
 * <p> 一个指令计算完的结果抽象
 * ===================================================================
 *
 * @author yumi@omuao.com
 */
public interface AlgorithmResult {

    String SUCCESS = "SUCCESS";

    String FAILED = "FAILED";

    /**
     * 设置结果代码
     *
     * @param code 代码
     */
    void setCode(String code);

    /**
     * 结果代码
     *
     * @return 结果代码
     */
    String getCode();

    /**
     * 成功
     */
    default void success() {
        this.setCode(SUCCESS);
    }

    /**
     * 失败
     */
    default void failed() {
        this.setCode(FAILED);
    }

    /**
     * 成功
     *
     * @return true -成功 false 失败
     */
    default boolean isSuccess() {
        return SUCCESS.equals(getCode());
    }

    /**
     * 失败
     *
     * @return true -成功 false 失败
     */
    default boolean isFailed() {
        return !SUCCESS.equals(getCode());
    }

    /**
     * 获得数据
     *
     * @return 数据
     */
    Object getData();

    /**
     * 设置数据
     *
     * @param data 数据
     */
    void setData(Object data);

    /**
     * 获得信息
     *
     * @return 信息
     */
    String getMessage();

    /**
     * 设置信息
     *
     * @param message 信息
     */
    void setMessage(String message);


}
